package com.snj.suiji;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class RandomDecimalGenerator {

    public static void main(String[] args) {
        // 示例调用
        int n = 20; // 生成5个随机小数
        List<BigDecimal> bigDecimals = generateRandomDecimals(n);

        bigDecimals.forEach(System.out::println);
    }

    /**
     * 生成n个5以内且大于0的随机小数，保留三位小数
     *
     * @param n 需要生成的随机小数数量
     * @return 包含n个随机小数的数组
     */
    public static List<BigDecimal> generateRandomDecimals(int n) {
        Random random = new Random();
        List<BigDecimal> list = new ArrayList<>();

        for (int i = 0; i < n; i++) {
            // 生成0到5之间的随机小数
            double randomValue = random.nextDouble() * 5;
            // 确保大于0
            if (randomValue <= 0) {
                randomValue = 0.001; // 如果小于等于0，则设置为一个最小值
            }
            // 保留三位小数
            BigDecimal setScale = new BigDecimal(randomValue).setScale(3, RoundingMode.HALF_UP);
            list.add(setScale);
        }

        return list;
    }
}